﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace Jmr.Entity.Poco.Silverlight
{
	/// <summary>
	/// EntitySessionHeaderKeys class provides string keys for HTTP request headers. 
	/// </summary>
	public class EntitySessionHeaderKeys
	{
		/// <summary>
		/// EntitySessionAction key.
		/// </summary>
		public static string EntitySessionAction = "EntitySessionAction".ToUpper();

		/// <summary>
		/// MappingAssemblyFullName key.
		/// </summary>
		public static string MappingAssemblyFullName = "MappingAssemblyFullName".ToUpper();

		/// <summary>
		/// MappingFullName key.
		/// </summary>
		public static string MappingFullName = "MappingFullName".ToUpper();

		/// <summary>
		/// EntityAssemblyFullName key.
		/// </summary>
		public static string EntityAssemblyFullName = "EntityAssemblyFullName".ToUpper();

		/// <summary>
		/// EntityFullName key.
		/// </summary>
		public static string EntityFullName = "EntityFullName".ToUpper();

		/// <summary>
		/// EntityArgFullName key.
		/// </summary>
		public static string EntityArgFullName = "EntityArgFullName".ToUpper();

		/// <summary>
		/// Query string key.
		/// </summary>
		public static string QueryString = "QueryString".ToUpper();

		/// <summary>
		/// Response length key.
		/// </summary>
		public static string ResponseLength = "ResponseLength".ToUpper();

	}

	/// <summary>
	/// EntitySessionRequestTuple class.
	/// </summary>
	public class EntitySessionRequestTuple
	{
		/// <summary>
		/// Reference to the WebRequest instance.
		/// </summary>
		public WebRequest Request { get; set; }

		/// <summary>
		/// Reference to the WebRequest instance.
		/// </summary>
		public byte[] EntityArg { get; set; }

		/// <summary>
		/// EntityAction value.
		/// </summary>
		public Action EntityAction { get; set; }

		/// <summary>
		/// MappingAssemblyFullName string.
		/// </summary>
		public string MappingAssemblyFullName { get; set; }

		/// <summary>
		/// MappingFullName string.
		/// </summary>
		public string MappingFullName { get; set; }

		/// <summary>
		/// EntityAssemblyFullName string.
		/// </summary>
		public string EntityAssemblyFullName { get; set; }

		/// <summary>
		/// EntityFullName string.
		/// </summary>
		public string EntityFullName { get; set; }

		/// <summary>
		/// EntityArgFullName string.
		/// </summary>
		public string EntityArgFullName { get; set; }
	}
}
